﻿(function($){
	$.extend({
		photoWall: function(config){
			var Box = $(config.dom);//取得展示区域
			var url = Box.attr("url") || config.url;
			var S = {
				init:function(){
					S.data = {};//初始化返回数据
					S.setGridObj();//初始话网格对象并设置默认值
					S.getData();//获得数据并添加对象到网格对象
					S.addLiHover();//添加鼠标经过事件
				},
				getData:function(){
					$.ajax({
						url:url,
						dataType:"json",
						success:function(data){
							S.data = $(data);
							S.setDomObj();//添加DOM对象到网格对象
							S.showDom();//插入HTML
							setTimeout(S.removeOld,10000);
							setTimeout(S.init,13000);
						}	
					})	
				},
				setGridObj:function(){
					S.gridObj = [];
					for(var i=0;i<config.row;i++){
						S.gridObj[i] = {};
						for(var j=0;j<config.col;j++){
							S.gridObj[i][j] = {
								value:0,
								row:i,
								col:j
							};	
						}	
					}
				},
				setDomObj:function(){
					S.data.each(function(i){
						S.addGridDom(this);
					})
				},
				addGridDom:function(dom){
					for(var i=0;i<config.row;i++){
						for(var j=0;j<config.col;j++){
							var Obj = S.gridObj[i][j];
							if(!Obj.value){
								if(dom.size == "big"){
									var ary = S.reBigObj(Obj);
									if(ary){
										$(ary).each(function(){
											this.value = 1;
										});
										dom.left = Obj.col*50;
										dom.top = Obj.row*50;
										Obj.dom = dom;	
										return false;
									}else{
										return false;
									}
								}
								Obj.value = 1;
								dom.left = Obj.col*50;
								dom.top = Obj.row*50;
								Obj.dom = dom;	
								return false;
							}
						}	
					}
				},
				reBigObj:function(obj){
					var ary = [];
					for(var i=0;i<3;i++){
						for(var j=0;j<3;j++){
							if(S.gridObj[obj.row+i] && 
									S.gridObj[obj.row+i][obj.col+j] && 
										S.gridObj[obj.row+i][obj.col+j].value == 0){//判断对象存在 && 空 
								ary.push(S.gridObj[obj.row+i][obj.col+j]);
							}else{
								return false;
							}
						}
					}		
					return ary;
				},
				showDom:function(){
					S.html = '<div class="PhotoWallInner"><ul>';
					for(var i=0;i<config.row;i++){
						for(var j=0;j<config.col;j++){
							var dom = S.gridObj[i][j].dom;
							if(dom){
								S.html += '<li style="left:'+ dom.left+'px;top:'+dom.top+'px;" class="'+dom.size+'"><div class="PWliinner">';
								S.html += '<img src="' + dom.src + '" />';
								S.html += '<div class="PWtitleBox"><b></b><i><a target="weibo" href="'+dom.url+'">'+dom.title+'</a></i></div>';
								S.html += "</div></li>";
							}
						}
					}
					S.html +="</ul></div>";
					Box.prepend(S.html);
				},
				removeOld:function(){
					if(Box.children().length > 1){
						var ary = Box.children();
						ary.not(ary.first()).fadeOut(1000,function(){
							$(this).remove();
						});
					}
				},
				addLiHover:function(){
					Box.find("li").each(function(){
						$(this).stop().hover(function(){
							$(this).find(".PWtitleBox").fadeIn();
						},function(){
							$(this).find(".PWtitleBox").fadeOut("fast");
						})
					});
				}
			}
			S.init();
		}
	})
})(jQuery);



